Google IT support — Fundamentals of IT


1. Introduction to IT

IT is the use of digital technology, computers and the Internet, to store data and process it into useful information.

IT support: managing, installing, maintaining, troubleshooting and configuring office and computing equipment.

1.1. Brief history of computing

Computer is a device that stores and processes data by performing calculations.

Algorithm is a series of steps that solves a specific problem.

1.2. Digital logic

Computers use binary system (base-2 numeral system). Binary digits (bits) are grouped into 8-packs (bytes). Number 8 is just a historical accident that became industry standard (28 = 256 possible byte values). Binary in modern computers is implemented via transistors (using electric voltage) and logic gates.

Examples:

  1. We need character encoding for bytes-to-characters translation. ASCII is the oldest character encoding standard, but eventually 256 characters wasn't enough. UTF-8 is a modern standard, which allows to store each character in more than one byte.

  2. There are many different standards for color representation, but the most basic one is RGB (3 characters for pixel brightness).

1.3. Computer architecture

Computer architecture can be represented with four layers of abstraction: hardware, operating system, software, and users.


2. Hardware

2.1. The modern computer

Every computer has a power outlet (for power supply) and ports (connection points for external hardware that enhance the functionality of a computer).

Computation process:

2.2. CPU

2.3. RAM

RAM is a computer's short term memory, which is used to store data that needs quick access (this data changes all the time).

2.4. Motherboard

Motherboard:

Key motherboard characteristics:

  1. Chipset

    A chipset is a key component of motherboard that allows manage data between CPU, RAM, and peripherals (i.e., chipset defines how components of a computer talk to each other). The chipset is made up of two chips: Northbridge, that interconnects stuff like RAM and video cards, and Southbridge, which maintains I/O controllers like hard drives and USB devices. In some modern CPUs, the Northbridge has been directly integrated into the CPU so there isn't a separate Northbridge chipset.

  2. Expansion slots

    Give the ability to increase the functionality of a computer. Modern standard: PCI Express (peripheral component interconnect express).

  3. Form factor

    There are different sizes of motherboards. The most common form factor is ATX (advanced technology eXtended), that comes in different sizes too. Another one is ITX (information technology eXtended), which is much smaller than ATX.

2.5. Storage

There are two basic storage types used today:

  1. HDDs (hard disk drives)

    • use a spinning platter and a mechanical arm to read and write information
    • key characteristic: the platter rotation speed (measured in RPMs)
    • more affordable, but more prone to damage
  2. SSDs (solid state drives)

    • have no moving parts
    • information is stored on microchips and data travels a lot faster

Interfaces for connection: SATA (serial ATA) (the most popular ATA interface; hot swappable, i.e., you don't have to turn off computer to plug it in) and NVMe (NVM Express) (new fast SSD interface; the drive is added as an expansion slot).

On the difference between kB, KB and KiB:

2.6. Power supply, batteries and charging systems

2.7. Mobile devices

The smaller the device, the more integrated its components usually are (CPU, RAM, and storage might be soldered directly to motherboard). Very small mobile devices use a SoC (system on a chip); it packs the CPU, RAM, and sometimes even the storage onto a single chip. SoC also use less battery power.

2.8. Peripherals

Peripheral is anything that's connected to a computer externally that adds functionality.

2.9. BIOS and UEFI

External devices (keyboards, webcams, printers, etc.) use special programs to tell the CPU how to run them, these programs are called drivers (or services). BIOS (basic input output system) tells CPU what devices are connected to computer. BIOS is software that helps initialize the hardware, and gets operating system up and running.

2.10. Building up PC

  1. Prevent unwanted static from harming computer components

    • touch pluged-in but not powered-on electrical device every couple of minutes
    • or wear anti-static wristband
  2. Motherboard

    • attach motherboard to the case via standoffs
  3. CPU

    • line up the CPU with the motherboard's socket (with the help of a marker)
    • secure CPU in the socket
  4. Heat sink

    • apply an even amount of thermal paste on CPU
    • take heat sink and press it against the CPU
    • tighten down the sockets with a screw diver
    • plug molex connector to the motherboard (controls fan's speed)
  5. RAM

  6. Hard drive

  7. Case fans

  8. PSU


3. Operating System

3.0. Remote connection

  1. SSH (secure shell)

    • Linux: openSSH
    • Windows: PuTTY
  2. RDP (remote desktop protocol)

    • Linux: realVNC
    • Windows: mstsc.exe (Microsoft terminal services client); to enable: Control Panel → System → Remote settings → Remote desktop
  3. VPN

3.1. Components of an OS

OS manages computer's resources and lets user interact with it. Two main parts of any OS: kernel (the main core of an OS) and user space (everything outside the kernel).

Kernel:

3.2. File management

There are three main components to handling files on an OS:

  1. File system defines

    • supported data volume
    • speed at which system operates
    • resiliency towards file corruption
    • etc.

    The major OS manufacturers have their own unique file systems (in general they don't play nicely with each other).

    • Windows: NTFS (encryption, faster access speed, security, etc), ReFS
    • MacOS: APFS (journaled)
    • Linux: different distros have different FS (standard: ext4)
  2. File data

    Data is stored in the form of data blocks. Data is usually broken in pieces and written to different parts of the disk. Block storage provides quicker data access and is better for utilizing storage space.

  3. Metadata

    Metadata contains the information about a file: file owner, permissions, file type, file size, date modified, etc.

3.3. Process management

  1. Process creation

    Program is an application that a user can run, and a process is a program that's executing, i.e., user can have many processes of the same program running at the same time (e.g., browser tabs of a web browser).

  2. Process scheduling

    When user runs programs, OS dedicates computer resources to them. Since resources are finite, kernel has to manage them efficiently. It has to schedule time for the CPU to execute the instructions of the processes one by one (time slice is a short interval of time that gets allocated to a process for CPU execution).

    Computer can run slowly when CPU resources are maxed out, e.g., when one process is taking up more time slices than it should or when there are too many processes that want CPU time.

  3. Process termination

    When a process is terminated, it releases all the previously used resources back to the kernel.

3.4. Memory management

When you execute a process, the data of the program is split into chunks called pages. Pages are stored in virtual memory (combination of hard drive space and RAM). Swap space is an allocated for virtual memory hard drive space.

Virtual memory is used instead of RAM for efficiency (you never need all the data from the application at once), so pages are sent to physical memory or RAM only when they are read or executed. Analogy: you don't need to read the whole cookbook just for one recipe.

3.5. I/O management

Kernel loads up drivers for I/O devices and manages communications and data transfer between hardware. It figures out the most efficient data transfer methods and makes sure data hasn't been corrupted during transmission.

3.6. User space

Ways of interacting with an OS:

3.7. Logs and the boot process

Logs are files that record system events on a computer (logs are useful for troubleshooting).

The Boot Process:

  1. Power On

  2. BIOS/UEFI runs POST (power on self test)

  3. Bootloader

    • boot device selection (based on boot order configuration in BIOS/UEFI)
    • search and lunch of a Bootloader (small program that loads the OS)
  4. Loading OS, Kernel and drivers

  5. Essential system processes and user space


4. Networking

4.1. Basics of networking

Network is an interconnection of computers.

Networking is managing, building and designing computer networks.

The Internet is composed of a massive network of satellites, cellular networks, and physical cables buried beneath the ground. Clients access the Internet through servers by connecting to a network run by an ISP (internet service provider). Data is sent through a network by packets.

Analogy: IP address is house address, MAC address is name of the recipient.

4.2. Networking hardware and protocols

Network stack is a set of hardware or software that provides the network infrastructure for a computer, i.e., all the components that makes up computer networking.

Network protocol is a set of rules for transfering data in a network (e.g., TCP, or transmission control protocol; IP, or internet protocol).

Network protocols make sure that packets are routed efficiently, aren't corrupted, are secure, go to the right machine and are named appropriately.

4.3. The Web

Websites are text documents formated with HTML (hypertext markup language; a coding language used by web browsers).

For convenience web browsers use urls (uniform resource locator) and domain addresses (instead of IP addresses). Domain names are registered by ICANN (the Internet Corporation for Assigned Names and Numbers).

There are approximately 4.3 billion IPv4 addresses, but there are way more websites today. Mitigation tools: IPv6 and NAT (network address translation), which lets organizations use one public IP address and many private IP addresses within the network.


5. Software

5.1. Introduction to software

Coding is translating one language to another.

Scripting is coding in a scripting language (scripts are used to perform a single or limited range task).

Programming is coding in a programming language.

Software:

  1. Application software: created to fulfill a specific need (i.e., text editor, web browser, etc.).

  2. System software: used to keep system running (e.g., OS tools and utilities).

    Firmware is a system software that's permanently stored on a computer component (e.g., BIOS).

5.2. Programming languages

Assembly was the first programming language, that allowed the use of human readable instructions, assembled into code.


6. Troubleshooting

6.1. Troubleshooting practices

Troubleshooting is ability to diagnose and resolve a problem.

Pitfalls to avoid:

6.2. Customer service

Great customer service requires exhibiting soft skills: empathy, being conscious of your tone, acknowledging the person you're talking to and developing trust with the user.

Documentation: